Add internal silent find-all-references command#14281
Open
carsonRadtke wants to merge 3 commits intomainfrom
Open
Add internal silent find-all-references command#14281carsonRadtke wants to merge 3 commits intomainfrom
carsonRadtke wants to merge 3 commits intomainfrom
Conversation
Contributor
|
Should call hierarchy be handled too? I haven't checked yet if the issue repros with that or not, but it might. UPDATE: Yeah, I tried it out (without this change) and I see Call Hierarchy Callers of cancel Copilot's Find All References. I see the same thing with Rename. Both of those share the same underlying implementation. Does this change fix those cases too? I also see #GetSymbolCallHierarchy_CppTools get canceled by a user invoked Find All References/etc.. |
Extension/src/LanguageServer/Providers/documentSymbolProvider.ts
Outdated
Show resolved
Hide resolved
a055128 to
1cbc9c5
Compare
Introduce an internal C_Cpp.FindAllReferences command that issues the existing cpptools/findAllReferences request without joining the workspaceReferences single-flight cancellation path. Extract the shared request and confirmed-location mapping logic from FindAllReferencesProvider so the existing vscode.executeReferenceProvider flow and the new silent command use the same request translation and cancellation handling for server-side cancel responses. Keep the interactive provider behavior unchanged: user-invoked references still cancel prior work, reset reference progress state, and update the ReferencesManager UI. The new command resolves the owning client from the target URI and returns locations without progress UI, preview notifications, or references panel updates, enabling concurrent silent callers such as Copilot.
Align cpptools with the companion changes that now prefer internal C_Cpp.* navigation commands over the generic vscode.* provider commands when running extension-driven symbol queries. Add C_Cpp.GoToDefinition, C_Cpp.PrepareCallHierarchy, C_Cpp.CallHierarchyCallsTo, and C_Cpp.CallHierarchyCallsFrom as internal commands that resolve the owning DefaultClient from the target URI and send requests directly to cpptools without joining the workspaceReferences UI and single-flight cancellation path. Extract shared call hierarchy request and conversion logic from CallHierarchyProvider so the existing interactive provider flow and the new silent commands share the same request translation and server-cancellation handling. Add a dedicated go-to-definition helper that sends the standard definition request through the language client and normalizes both Location and DefinitionLink responses to Location[] so companion callers can consume a stable result shape. Keep interactive behavior unchanged: user-invoked providers continue to use the existing VS Code registrations, progress handling, and workspaceReferences-driven cancellation semantics, while extension callers such as the devtools companion can use the new internal command surface without canceling overlapping work.
1cbc9c5 to
dd5a028
Compare
sean-mcmanus
approved these changes
Apr 8, 2026
sean-mcmanus
approved these changes
Apr 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduce an internal C_Cpp.FindAllReferences command that issues the existing cpptools/findAllReferences request without joining the workspaceReferences single-flight cancellation path.
Extract the shared request and confirmed-location mapping logic from FindAllReferencesProvider so the existing vscode.executeReferenceProvider flow and the new silent command use the same request translation and cancellation handling for server-side cancel responses.
Keep the interactive provider behavior unchanged: user-invoked references still cancel prior work, reset reference progress state, and update the ReferencesManager UI. The new command resolves the owning client from the target URI and returns locations without progress UI, preview notifications, or references panel updates, enabling concurrent silent callers such as Copilot.
Is part of a fix to ADO:2826103 and ADO:2741397 along with internal changes to the cpptools server and the devtools extension.